(define (adjoin-term term term-list)
  (if (=zero? (coeff term))
      (term-list)
      (let ((exponet (order term))
            (list-exponent (- (length term-list) 1)))
        (cond ((= exponet list-exponent)
               (cons (+ (coeff term)
                        (car term-list))
                     (cdr term-list)))
              ((< exponet list-exponent)
               (cons (car term-list)
                     (adjoin-term term (cdr term-list))))
              ((> exponet list-exponent)
               (adjoin-term term (cons 0 term-list)))))))

(define (first-term term-list)
  (make-term (- (length term-list) 1)
             (car term-list)))
